home *** CD-ROM | disk | FTP | other *** search
- {Another Unit By THE DARKMAN Done About 1/2 A year ago when i was young and
- innocent}
- Unit Mouser;
-
- Interface
-
- Procedure Buttons(Left,Right : Boolean; Var lb,rb : Boolean);
- Function ClickIn(X1,Y1,X2,Y2 : Integer) : Boolean;
- Function NoDriver : Boolean;
- Procedure LoadMouse;
- Function Xpos : Word;
- Function Ypos : Word;
- Procedure MouseOff;
- Procedure MouseXY(X,Y : Integer);
- Procedure MouseRange(X1,Y1,X2,Y2 : Word);
-
- Implementation
-
- Uses Dos,Crt;
-
- Var Lb,Rb : Boolean;
- Regs : Registers;
-
-
- {---------------------Procedure To Load Mouse--------------------------------}
-
- Procedure LoadMouse;
- Begin
- Regs.Ax := $1;
- Intr($33, Regs);
- end;
-
- {---------------Procedure To Hide Mouse Cur-----------------------------------}
-
- Procedure MouseOff;
- Begin
- Regs.Ax := $0;
- Intr($33, Regs);
- end;
-
- {----------------FUNCTION TO LIMIT X + Y AREA OF MOUSE POS--------------------}
-
-
- Procedure MouseRange(X1,Y1,X2,Y2 : Word);
- Begin
- Regs.Ax := $8;
- Regs.Cx := Integer (Y1) Shl 3;
- Regs.Dx := Integer (Y2) Shl 3;
- Intr($33,Regs);
- Regs.Ax := $7;
- Regs.Cx := Integer (X1) Shl 3;
- Regs.Dx := Integer (X2) Shl 3;
- Intr($33,Regs);
- end;
-
-
- {--------------------RETURNS THE XPOS OF MOUSE CURSOR------------------------}
-
- Function Xpos : Word;
- Begin
- Regs.Ax := $0003;
- Intr($33,Regs);
- Xpos := Regs.Cx Shr 3;
- end;
-
- {----------------------------------------------------------------------------}
-
-
- {------------------RETURNS YPOS OF MOUSE CURSOR------------------------------}
-
- Function Ypos : Word;
- Begin
- Regs.Ax := $0003;
- Intr($33,Regs);
- Ypos := Regs.Dx Shr 3;
- end;
-
-
- {-------------------SENDS MOUSE TO X / Y POSITION----------------------------}
-
- Procedure Mousexy(X,Y : Integer);
- Begin
- Regs.Ax := $0004;
- Regs.Cx := X Shl 3;
- Regs.Dx := Y Shl 3;
- Intr($33,Regs);
- end;
-
-
- {--------PROCEDURE FOR TESTING IF BUTTON WAS PRESSED IN AREA DEFINED---------}
-
- Function ClickIn(X1,Y1,X2,Y2 : Integer) : Boolean;
- Var Mxpos,Mypos,lb,rb : Boolean;
- Begin
- Buttons(lb,rb,lb,rb);
- If (Xpos > X1-2) And (Xpos < X2) Then Mxpos := True Else Mxpos := False;
- If (Ypos > Y1-2) And (Ypos < Y2) Then Mypos := True Else Mypos := False;
- If (Mypos) And (MxPos) And Lb Then ClickIn := True else ClickIn := False;
- end;
-
- {----------------------------------------------------------------------------}
-
-
- {-------------PROCEDURE TO TEST WHICH BUTTONS WHERE PRESSED------------------}
-
- Procedure Buttons(Left,Right : Boolean; Var Lb,rb : Boolean);
- Begin
- Regs.Ax := $0003;
- Regs.Bx := $0000;
- Intr($33,Regs);
- If(Regs.Bx And $01) = $01 Then Left := True Else Left := False;
- If(Regs.Bx And $02) = $02 Then Right := True Else Right := False;
- Lb := Left;
- Rb := Right;
- end;
-
- {----------------------------------------------------------------------------}
-
- {-----------------DO NOT TRUST THIS CODE CHECKS IF M DRIVER PRESENT-----------}
-
- Function NoDriver : Boolean;
- Begin
- Regs.Ax := 0;
- Intr($33,Regs);
- If Regs.Ax > 0 Then NoDriver := False Else NoDriver := True;
- end;
- end.
-